package com.project.mapper;

import com.project.bean.StuBean;
import com.project.bean.UserBean;
import org.apache.ibatis.annotations.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface IUserMapper {
    /**
     * 登录
     *
     * @param username 用户名
     * @param pwd      密码
     * @return 校验成功，返回登陆用户对象，校验失败，返回null
     * 用户信息：用户编号、用户名、密码、真实姓名、等级
     */
    @Select("select * from t_user1 where u_name = #{username} and u_pwd = #{pwd}")
    @ResultMap("userMap")
    public UserBean login(@Param("username") String username, @Param("pwd") String pwd);

    /**
     * 按id修改密码
     *
     * @param userId 用户id
     * @param newPwd 新密码
     */
    @Update("update t_user1 set u_pwd = #{newPwd} where pk_userId = #{userId}")
    public void updatePwd(@Param("userId") Integer userId, @Param("newPwd") String newPwd);

    /**
     * 查询所有的用户
     *
     * @return 用户集合
     * 用户信息：用户编号、用户名、密码、真实姓名、等级
     */
    @Select("select * from t_user1")
    @ResultMap("userMap")
    public List<UserBean> findAll();

    /**
     * 按用户名统计用户数量
     *
     * @param newUser
     * @return 用户数量
     */
    @Select("select count(u_name) from t_user1 where u_name = #{username}")
    public Integer findUserByUserName(UserBean newUser);

    /**
     * 完成用户的添加
     *
     * @param newUser 用户对象（用户名、真实姓名、用户等级）
     */
    @Insert("insert into t_user1 (u_name,u_pwd,u_realName,u_grade)" +
            " values (#{username},#{userPwd},#{userRealName},#{userLevel})")
    public void addUser(UserBean newUser);

    /**
     * 按id删除用户
     *
     * @param userId 用户id
     */
    @Delete("delete from t_user1 where pk_userId = #{userId}")
    public void delUser(Integer userId);

    /**
     * 根据用户id查询用户信息
     *
     * @param userId 用户id
     * @return 用户对象
     */
    @Select("select * from t_user1 where pk_userId = #{id}")
    @ResultMap("userMap")
    public UserBean findById(Integer userId);

    /**
     * 按用户id，修改该用户的等级
     *
     * @param userId   用户id
     * @param newLevel 新用户等级
     */
    @Update("update t_user1 set u_grade =#{newLevel} where pk_userId = #{userId} ")
    public void updateUserLevel(@Param("userId") Integer userId, @Param("newLevel") String newLevel);
}
